#include "head.h"

//初始化集合
void init_set(Set *set){
    for(int i = 0; i < MAX_SET_SIZE; i++){
        set->elements[i] = 0;
        bzero(&(set->name[i]), 100);
    }   
    set->size = 0;
}

//初始化集合数组
void init_set_list(Set *set_list[], int num_sets) {
    for (int i = 0; i < num_sets; i++) {
        set_list[i] = (Set *)malloc(sizeof(Set));
        init_set(set_list[i]);
    }   
}

//向集合添加元素
void add_element(Set *set, int element){
    if(set->size < MAX_SET_SIZE){
        set->elements[set->size] = element;
        set->size++;
    }   
}

//从集合中删除一个指定的元素
void remove_element(Set *set, int element){
    int index = -1; //索引位置
    for(int i = 0; i < set->size; i++){
        if(set->elements[i] == element){
            index = i; //记住索引位置
            break;
        }
    }
    //删除元素
    if(index != -1){
        //后面元素向前移动
        for(int i = index; i < set->size - 1; i++){
            set->elements[i] = set->elements[i + 1];
        }
        set->size--; // 更新集合大小
    }
}

//从集合中删除一个元素
int remove_an_element(Set *set){
    int element = set->elements[set->size - 1];
    set->size--;
    return element;
}

//打印集合中的元素(测试用)
void print_set(Set *set){
    printf("Set elements: ");
    for(int i = 0; i < set->size; i++){
        printf("%d ", set->elements[i]);
    }
    printf("\n");
}

